<template>
	<view>
		<mescroll-uni ref="mescrollRef" @init="mescrollInit" top="115" @down="downCallback" :down="downOption" :up="upOption" @up="upCallback" @emptyclick="emptyClick" @scroll="handleScroll">
			<list :list="orderList" @actionClick="actionClick"></list>
		</mescroll-uni>
	</view>
</template>

<script>
	import mescrollUni from "@/jvss/pageCloud/components/mescroll-uni/mescroll-uni.vue";
	import MescrollMixin from "@/jvss/pageCloud/components/mescroll-uni/mescroll-mixins.js";
	import list  from './list.vue'
	import { getOrderList }from '@/API/api.js'
	export default {
		components:{ list,mescrollUni },
		mixins: [MescrollMixin], // 使用mixin
		props:{
			// tab切换的状态
			tab:{
				type:String,
				default:''
			},
			isMescrollToBottom:{//滚动条是否默认滚到底部
				type:Boolean,
				default:false
			},
			isUse:{
				type:Boolean,
				default:false
			}
		},
		data() {
			return {
				downOption:{
					use:false,//是否启用下拉刷新
					auto:false ,//是否在初始化完毕之后自动执行一次下拉刷新的回调
					textInOffset:'下拉刷新',//下拉刷新
					textOutOffset:'释放更新',//释放更新
					textLoading:'加载中 ...',//加载中 ...
					textSuccess:'加载成功',//加载成功
					textErr:'加载失败',//加载失败
					onScroll:true
				},
				upOption:{
					auto:false,
					page: {
						size: 10 // 每页数据的数量
					},
					noMoreSize: 6, //如果列表已无数据,可设置列表的总数量要大于半页才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看; 默认5
					textLoading:'加载中 ...',//上拉加载中的文本
					textNoMore:'~~小主，数据加载完毕~~',//没有更多数据的提示文本(~~小主，数据加载完毕~~)
					textColor:'#c0bebe',
					empty:{
						tip: '小主，~~暂无数据~~', // 提示
						// btnText: '去看看'
					},
					onScroll:true
				},
				orderList: [], //列表数据
				status:this.tab,//选择的类型
				demos:null
			}
		},
		onShow(){
			console.log('list----订单类型')
			console.log(this.orderList)
		},
		methods: {
			// 切换菜单
			tabChange(val) {
				this.status = val;
				this.orderList = []// 先置空列表,显示加载进度
				this.mescroll.resetUpScroll() // 再刷新列表数据
				this.scrollToY(0)
			},
			handleYun(status,classifyId){
				return (status==='finish' || status==='refund')&&classifyId==='xmc.css';
			},
			/*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
			upCallback(page) {
				const {num,size} = page;
				let params = {
					status:this.status === "all" ? "" : this.status,
					page:num,
					limit:size
				}
				//联网加载数据
				getOrderList(params).then(res=>{
					const {code,data} = res;
					if(code===2000){
						let list = data.data || [];
						list.forEach((item)=>{
							item.childOrderList = item.childOrderList || []
							item.xmc_css = this.handleYun(item.status,item.classifyId);
							item.childOrderList.forEach(child=>{
								if(!item.xmc_css){
									item.xmc_css = this.handleYun(child.status,child.classifyId);
								}
							})
						})
						//联网成功的回调,隐藏下拉刷新和上拉加载的状态;
						this.mescroll.endSuccess(list.length,data.total);
						//设置列表数据
						if(page.num == 1) this.orderList = []; //如果是第一页需手动制空列表
						this.orderList=this.orderList.concat(list); //追加新数据
						console.log('list----订单类型')
						console.log(this.orderList)
						const flag = {
							'xmc.css':false,
							'xmc.voes':false,
							'pms.voes':false,
							'pms.pms':false,
							'net.cellular':false
						}
						this.orderList.forEach(item=>{
							if(item.status!=='finish'){
								flag[item.classifyId] = true
							}
						})
						for (const flagKey in flag) {
							let pointData = null
							if(flagKey==='xmc.css' && flag[flagKey]){
								pointData = {code:'603080', eventName: 'xmcCss_goods_unfinishOrders'}
							}
							if(flagKey==='xmc.voes' && flag[flagKey]){
								pointData = {code:'603081',eventName: 'xmcVoes_goods_unfinishOrders'}
							}
							if(flagKey==='pms.voes' && flag[flagKey]){
								pointData = {code:'603082',eventName: 'pmsVoes_goods_unfinishOrders'}
							}
							if(flagKey==='pms.pms' && flag[flagKey]){
								pointData = {code:'603083',eventName: 'pmsSms_goods_unfinishOrders'}
							}
							if(flagKey==='net.cellular' && flag[flagKey]){
								pointData = {code:'603084',eventName: 'netCellular_goods_unfinishOrders'}
							}
							pointData && this.$postPointData(pointData)
						}
						if(this.isMescrollToBottom){
							this.scrollToBottom();
						}
					}else{
						this.mescroll.endSuccess(0, 0);//隐藏下拉刷新和上拉加载的状态;
						this.orderList= [];
					}

				}).catch(()=>{
					//联网失败, 结束加载
					this.mescroll.endErr();
				})
			},
			// 操作
			actionClick(type,item,index){
        this.$emit('actionClick',type,item,index)
			},
			// 删除
			handleDelete(index){
				this.orderList.splice(index,1)
			},
			//点击空布局按钮的回调
			emptyClick(){
				uni.showToast({
					title:'点击了按钮,具体逻辑自行实现'
				})
			},
			// 主动触发下拉刷新
			triggerDownScroll(){
				this.mescroll.scrollTo(0, 0)
				this.mescroll.triggerDownScroll()
			},
			// 滚动到指定位置,传数字 (单位px)
			scrollToY(y){
				// this.mescroll.scrollTo(y) // 过渡动画时长默认300ms
				this.mescroll.scrollTo(y, 0) // 无过渡动画
			},
			// 滚动到指定view,传view的id
			scrollIntoView(viewId){
				// this.mescroll.scrollTo(viewId) // 过渡动画时长默认300ms
				this.mescroll.scrollTo(viewId, 0) // 无过渡动画
			},
			/* 滚动条滚到底部 */
			scrollToBottom(){
				this.mescroll.myScrollTo(9999,0)
			},
			handleScroll(mescroll){
				this.$emit('scroll',mescroll)
			}
		}
	}
</script>

<style lang="less" scope>
@import '@/common/style/main.css';
</style>
